2384
4727
這個問題已經在這裡有了答案:
Express JS-無法重定向
(4個答案)
7年前關閉。
我在下面的中間件中使用passportjs。假設檢查用戶在請求某些東西時是否登錄。如果未登錄,則應將其重定向到登錄頁面。
我的請求路線如下:
app.put('/ fantasyteams /:fantasyTeamId',auth.requiresLogin,fantasyteams.update);
當用戶嘗試更新網站中名為Fantasy Team的資源時,將調用此路由
auth.requiresLogin是一種中間件,如下所示:
Exports.requiresLogin = function(req,res,next){
如果(req.isAuthenticated()){
返回next()
}
返回res.redirect(“ / signin”);
};
登錄我的用戶後,我通過刪除會話cookie來模擬會話到期。之後,我通過網站提出了“ / fantasyteams / 123”請求,以更新幻想團隊編號123。
fantasyteams.update僅僅是mongodb / mongoose保存操作:
exports.update = function(req,res){
var fantasyteam = req.fantasyteam;
fantasyteam = _.extend(fantasyteam,req.body);
fantasyteam.save(function(err){
res.jsonp(fantasyteam);
});
};
正如預期的那樣,上述路由處理程序(app.put ...)捕獲了該請求,將其傳遞給auth.requiresLogin中間件以檢查用戶是否登錄。因此事實證明,由於我刪除了該用戶,因此未登錄他的會話Cookie。 res.redirect如預期那樣被調用。但是,該網站不會重定向到登錄頁面。我在node.js命令日誌中看到了這一點:
PUT /登錄404 328ms
我做錯什麼了? 
看來問題在於您沒有用於PUT / signin的路由處理程序。原始請求是放置請求,因此當重定向時,它仍然是瀏覽器相同的“放置”請求的一部分。只需使用app.all('/ signin')添加一個放置/發布/處理程序
3
|
不是您要找的答案?瀏覽標記為node.js會話cookie的其他問題,表達護照或護照,或者提出您自己的問題。